package io;

import java.io.*;

/**
 * 使用缓冲字符输入流读取文本数据
 *
 * java.io.BufferedReader
 * 缓冲字符输入流内部默认有一个8192长的char数组,可以块读文本数据保证读取效率,并且其提供了一个
 * 可以一次读取一行字符串的方法:readLine
 *
 */
public class BRDemo {
    public static void main(String[] args) throws IOException {
        /*
            将当前源代码读取出来输出到控制台上
         */
        FileInputStream fis = new FileInputStream("./src/main/java/io/BRDemo.java");
        InputStreamReader isr = new InputStreamReader(fis);
        BufferedReader br = new BufferedReader(isr);
        /*
            String readLine()
            读取一行字符串并返回.
            实际内部操作:
            当第一次调用readLine方法是,BufferedReader会通过其连接的流一次性块读8192个字符并且
            存入到其内部的char数组中,并将数组从头开始的一行字符串返回.返回的字符串不含有最后的换行符

            当第二次调用readLine方法时,将char数组中第二行字符串返回


            返回值的特殊情况:
            如果返回值为null表示流读取到了末尾
            如果返回是为"",表示读取到了空行

         */
        String line;
        while((line = br.readLine())!=null){
            System.out.println(line);
        }
        br.close();

    }
}





